package cn.tedu;

import org.springframework.context.annotation.Lazy;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component;

import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;

/**构建一个对象池类型，有类似的线程，连接池,...*/
@Lazy//延迟加载，默认值为true，需要配合单例作用域
@Scope("singleton")//singleton为单例作用域，也是默认值，还有一个常用的称之为prototype
@Component
public class ObjectPool {
    public ObjectPool() {
        System.out.println("ObjectPool()");
    }
    /**生命周期初始化方法,构造方法执行之后执行*/
    @PostConstruct
    public  void init(){
        System.out.println("init()");
    }
    /**生命周期销毁方法，这个对象销毁之前执行*/
    @PreDestroy
    public void destroy(){
        System.out.println("destroy()");
    }
}